package _10线程安全的类;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Vector;


// 线程非安全类                  // 线程安全的类(方法都是synchronized)
// ArrayList ->	Vector
// HashMap   -> HashTable
// StringBuilder ->StringBuffer


// 解决线程安全问题
// 1. 将代码放入同步代码块
// 2. 使用线程安全的类
// 3. 线程非安全类通过Collections.synchronizedList()转换为线程安全的类

public class TestDemo {

	
	
	
	public static void main(String[] args) throws InterruptedException {
		// TODO Auto-generated method stub

//		List<Integer> l = new ArrayList<>();
//		List<Integer> l = new Vector<>();
		
		List<Integer> l = Collections.synchronizedList(new ArrayList<>());
		
		// 开启1000个线程
		for(int i=0;i<100;i++)
		{
			Thread t = new Thread(new Runnable() {
				@Override
				public void run() {
					
					// 放入1000数字
					for(int j=1;j<100;j++)
					{
						l.add(j);
					}
					
				}
			});
			t.start();
		}
		
		Thread.sleep(10000);
		System.out.println(l.size());
		// 理论上100*99 = 9900
		// 结果只有 9482
		
	}

}
